package com.github.chirspan.xaas.mybatis.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * *******description*******
 * mybatis查询配置注解
 * *************************
 *
 * @author chenpan
 * @date 2019/10/25 17:17
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SelectOption {

    /**
     * 是否模糊查询
     *
     * @return
     */
    boolean likeColumn() default false;

    /**
     * 模糊查询通配符位置 before after both
     */
    WildcardPosition wildcardPosition() default WildcardPosition.AFTER;

    public static enum WildcardPosition {
        BEFORE,
        AFTER,
        BOTH;
    }

    /**
     * 日期查询区间
     *
     * @return
     */
    boolean betweenDate() default false;

    DatePosition datePosition() default DatePosition.NULL;

    /**
     * 开始日期取值的属性，为空时取本身
     *
     * @return
     */
    String startDateValueKey() default "";

    /**
     * 开始日期取值的属性，为空时取本身
     *
     * @return
     */
    String endDateValueKey() default "";

    /**
     * 开始还是结束
     */
    public static enum DatePosition {
        NULL,
        START,
        END,
        START_AND_END;
    }

}
